ডেটাবেজ রিলেশন বলতে আসলে ডেটাবেজের টেবিলগুলোর মধ্যে সম্পর্ক বোঝানো হয়। একটি ডেটাবেজে এক বা একাধিক টেবিল থাকতে পারে। যখন একাধিক টেবিল থাকে, তখন প্রায়শই টেবিলগুলোর মধ্যে সম্পর্ক বা রিলেশন (relation) থাকে। এই রিলেশন আবার তিন ধরনের হতে পারে :
ডেটাবেজ ম্যানেজমেন্ট সিস্টেম
১. ওয়ান টু ওয়ান (one to one)
২. ওয়ান টু মেনি (one to many)
৩. মেনি টু মেনি (many to many)
১. ওয়ান টু ওয়ান রিলেশন
দুটি টেবিলের মধ্যে যদি ওয়ান টু ওয়ান রিলেশন থাকে, তবে একটি টেবিলের একটি রো-এর সঙ্গে অন্য টেবিলের একটিমাত্র রো-এর সম্পর্ক খুঁজে পাওয়া যাবে। ধরা যাক, শিক্ষার্থীদের সাধারণ তথ্য রাখার জন্য একটি টেবিল student_info তৈরি হলো। আবার শিক্ষার্থীদের যোগাযোগের ঠিকানা রাখার জন্য তৈরি করা হলো student_contact টেবিল। টেবিলগুলো নিম্নরূপ :
উপরের টেবিল দুটির মধ্যে ওয়ান টু ওয়ান রিলেশন বিদ্যমান। যেমন – student_info টেবিলের প্রতিটি রো-তে একজন শিক্ষার্থীর তথ্য রয়েছে। এই টেবিলের প্রাইমারি কি হচ্ছে Roll (যদিও প্রাইমারি কি হিসেবে Roll সবসময় সঠিক নয়, তবে এখানে আলোচনার সুবিধার্থে এটি প্রাইমারি কি হিসেবে ঘোষণা করা হয়েছে)। এখন, এই টেবিলে প্রতিটি শিক্ষার্থী (রো)-এর জন্য student_contact টেবিলে একটি রো থাকবে, যেখানে ওই শিক্ষার্থীর যোগাযোগের ঠিকানা (ফোন, ইমেইল, বাসার ঠিকানা) থাকবে। student_info টেবিলে Roll হচ্ছে প্রাইমারি কি, কিন্তু student_contact টেবিলে Roll হচ্ছে ফরেন কি (foreign key)। একটি টেবিলের প্রাইমারি কি অন্য টেবিলে যখন ব্যবহার করা হয়, তখন সেই টেবিলে সেই কি-কে ফরেন কি বলা হয়। এই বিশেষ কি দিয়ে টেবিলদুটি সম্পর্কযুক্ত হয়।
২. ওয়ান টু মেনি রিলেশন
ধরা যাক, শিক্ষার্থীদের পরীক্ষার ফল সংরক্ষণ করার জন্য result নামের একটি টেবিল তৈরি করা হলো। টেবিলের প্রতিটি রো-তে একজন শিক্ষার্থীর একটি বিষয়ে পরীক্ষায় প্রাপ্ত নম্বর থাকবে।
টেবিলের নাম : result
Roll
Subject
(Integer, Primary Key)
1
2
(Integer )
1
1
2
2
ID
(Text)
Bangla
English
Marks (Decimal)
70
76
3
4
Bangla
English
68
81
এখানে দেখা যাচ্ছে যে, student_info টেবিলের একটি রো-এর সঙ্গে result টেবিলের একাধিক রো-এর সম্পর্ক রয়েছে। যেমন- রোল নম্বর 1 যার, তার দুটি বিষয়ে প্রাপ্ত নম্বর result টেবিলে দুটি রো-তে রাখা আছে। student_info ও result টেবিলের মধ্যকার সম্পর্ককে ওয়ান টু মেনি রিলেশন বলা হয়, কারণ প্রথম টেবিলের একটি রো-এর সঙ্গে দ্বিতীয় টেবিলের একাধিক রো-এর সম্পর্ক রয়েছে। result টেবিলের
Roll হচ্ছে ফরেন কি ।
৩. মেনি টু মেনি
যখন দুটি টেবিল এমনভাবে সম্পর্কযুক্ত হয় যে, প্রথম টেবিলের একটি রো, দ্বিতীয় টেবিলের একাধিক রো- এর সঙ্গে সম্পর্কযুক্ত, আবার দ্বিতীয় টেবিলের একটি রো, প্রথম টেবিলের একাধিক রো-এর সঙ্গে সম্পর্কযুক্ত হয়, তখন তাদের মধ্যকার সম্পর্ককে বলা হয় মেনি টু মেনি রিলেশনশিপ।
ধরা যাক, স্কুলে বিভিন্ন ক্লাব তৈরি করা হয়েছে। যেমন— ফুটবল ক্লাব, ক্রিকেট ক্লাব, দাবা ক্লাব, বিতর্ক ক্লাব, বিজ্ঞান ক্লাব, সাংস্কৃতিক ক্লাব ইত্যাদি। একজন শিক্ষার্থী এক বা একাধিক ক্লাবের সদস্য হতে পারে। আবার একটি ক্লাবে একাধিক শিক্ষার্থী থাকতে পারে। নিচে club টেবিলটি দেওয়া হলো-
এই টেবিলের প্রাইমারি কি হচ্ছে Name. অর্থাৎ প্রতিটি ক্লাবের অনন্য (unique) নাম থাকবে, একই নামে একাধিক ক্লাব থাকতে পারবে না।
এখন student_info ও club টেবিল দুটির মধ্যে সম্পর্ক স্থাপনের জন্য আমাদেরকে আরেকটি টেবিল তৈরি করতে হবে।
টেবিলের নাম : student_club
Roll
(Integer )
1
Cricket Club
Cricket Club
club_name (text)
Football Club
Chess Club
Debating Club
মেনি টু মেনি রিলেশনের জন্য এরকম একটি টেবিল তৈরি করতে হয়, যার কাজ হচ্ছে মূল টেবিলদুটি যুক্ত করা।
Read more